
# Include
#INCLUDE_DIRECTORIES( ../angle
#                     ../material
#                     ../source
#                     ../tran
#                     ../../utilities  )

SET(ANGLE_SRC 
	${SLABTRAN_DIR}/angle/AngularMesh.cc                    
	${SLABTRAN_DIR}/angle/Gauss_Legendre_1D.cc        
	${SLABTRAN_DIR}/angle/Level_Symmetric_3D.cc
	${SLABTRAN_DIR}/angle/Moment_to_Discrete.cc   
	${SLABTRAN_DIR}/angle/MomentsIndex.cc                           
	${SLABTRAN_DIR}/angle/Octant.cc                   
	${SLABTRAN_DIR}/angle/Quadrature.cc               
	${SLABTRAN_DIR}/angle/QuadratureFactory.cc        
	${SLABTRAN_DIR}/angle/Quadruple_Range_2D.cc
	${SLABTRAN_DIR}/angle/Spherical_Harmonics.cc
	${SLABTRAN_DIR}/angle/Uniform_Equal_3D.cc
)

SET(TRAN_SRC
   ${SLABTRAN_DIR}/tran/FissionSource.cc
   ${SLABTRAN_DIR}/tran/State.cc
   ${SLABTRAN_DIR}/tran/SweepSource.cc
   ${SLABTRAN_DIR}/tran/DD_1D_Equations.cc
   ${SLABTRAN_DIR}/tran/DD_2D_Equations.cc
   ${SLABTRAN_DIR}/tran/DD_3D_Equations.cc
)  

SET(FIELD_SRC
   ${SLABTRAN_DIR}/tran/Moments_Field.cc
   ${SLABTRAN_DIR}/tran/Psi_Cell_Field.cc
)

SET(MESH_SRC
	${SLABTRAN_DIR}/tran/CartMesh.cc
)

SET(MAT_SRC
    ${SLABTRAN_DIR}/material/Materials.cc
    ${SLABTRAN_DIR}/material/Cross_Section.cc
    ${SLABTRAN_DIR}/material/BuiltInCrossSections.cc
)

message( "++ Adding slabtran tests." )

# ( exename  exesrc )
#
# ../angle
ADD_EXECUTABLE( testAngularMeshx            testAngularMesh.cc          ${ANGLE_SRC}                         )
TARGET_LINK_LIBRARIES( testAngularMeshx utils )
ADD_EXECUTABLE( testLevel_Symmetric_2Dx     testLevel_Symmetric_2D.cc   ${ANGLE_SRC}                         )
TARGET_LINK_LIBRARIES( testLevel_Symmetric_2Dx utils )
ADD_EXECUTABLE( testSpherical_Harmonicsx    testSpherical_Harmonics.cc  ${ANGLE_SRC}                         )
TARGET_LINK_LIBRARIES( testSpherical_Harmonicsx utils )
ADD_EXECUTABLE( testMomentsIndex            testMomentsIndex.cc         ${ANGLE_SRC}                         )
TARGET_LINK_LIBRARIES( testMomentsIndex utils )

ADD_EXECUTABLE( testFieldx                  testFields.cc               ${MESH_SRC} ${FIELD_SRC}             )
TARGET_LINK_LIBRARIES( testFieldx utils )
ADD_EXECUTABLE( testMeshx                   testMesh.cc                 ${MESH_SRC}  )
TARGET_LINK_LIBRARIES( testMeshx utils )
ADD_EXECUTABLE( testMoments_Fieldx          testMoments_Field.cc        ${FIELD_SRC} ${MESH_SRC}             )
TARGET_LINK_LIBRARIES(testMoments_Fieldx utils )
ADD_EXECUTABLE( testMoment_to_Discretex     testMoment_to_Discrete.cc   ${ANGLE_SRC}                         )
TARGET_LINK_LIBRARIES( testMoment_to_Discretex  utils )
ADD_EXECUTABLE( testTestingx                testTesting.cc                                                   )
TARGET_LINK_LIBRARIES( testTestingx utils )
ADD_EXECUTABLE( testBuiltInCrossSectionsx   testBuiltInCrossSections.cc ${MAT_SRC}                           )
TARGET_LINK_LIBRARIES( testBuiltInCrossSectionsx utils )
ADD_EXECUTABLE( testPsi_Cell_Fieldx         testPsi_Cell_Field.cc       ${FIELD_SRC} ${MESH_SRC}  )
TARGET_LINK_LIBRARIES( testPsi_Cell_Fieldx utils )
ADD_EXECUTABLE( testSweepSourcex            testSweepSource.cc          ${TRAN_SRC} ${ANGLE_SRC} ${MAT_SRC} ${FIELD_SRC} ${MESH_SRC}  )
TARGET_LINK_LIBRARIES( testSweepSourcex utils )
ADD_EXECUTABLE( testFissionSourcex          testFissionSource.cc        ${TRAN_SRC} ${ANGLE_SRC} ${MAT_SRC} ${FIELD_SRC} ${MESH_SRC}  )
TARGET_LINK_LIBRARIES(testFissionSourcex utils )

ADD_EXECUTABLE( testDD_Equationsx           testDD_Equations.cc         ${TRAN_SRC} ${ANGLE_SRC} ${FIELD_SRC} ${MESH_SRC}  )
TARGET_LINK_LIBRARIES( testDD_Equationsx utils )
              
# ( testname exename arg1 arg2 ... )
#
# Angles
#
ADD_TEST( testAngularMesh_1 testAngularMeshx 1)
ADD_TEST( testAngularMesh_2 testAngularMeshx 2)
ADD_TEST( testAngularMesh_3 testAngularMeshx 3)
ADD_TEST( testAngularMesh_4 testAngularMeshx 4)
ADD_TEST( testAngularMesh_5 testAngularMeshx 5)
ADD_TEST( testAngularMesh_6 testAngularMeshx 6)
ADD_TEST( testSpherical_Harmonics_1 testSpherical_Harmonicsx 1)
ADD_TEST( testSpherical_Harmonics_2 testSpherical_Harmonicsx 2)
ADD_TEST( testSpherical_Harmonics_3 testSpherical_Harmonicsx 3)
ADD_TEST( testLevel_Symmetric_2D_1 testLevel_Symmetric_2Dx 1)
ADD_TEST( testField_1 testFieldx 1)
ADD_TEST( testMesh_1 testMeshx 1)
ADD_TEST( testMesh_2 testMeshx 2)
ADD_TEST( testMesh_3 testMeshx 3)
ADD_TEST( testMesh_4 testMeshx 4)
ADD_TEST( testMoments_Field_1 testMoments_Fieldx 1)
ADD_TEST( testMoments_Field_2 testMoments_Fieldx 2)
ADD_TEST( testMoments_Field_3 testMoments_Fieldx 3)
ADD_TEST( testMoments_Index_1 testMoments_Fieldx 4)
ADD_TEST( testMoments_Index_2 testMoments_Fieldx 5)
ADD_TEST( testMoments_Index_3 testMoments_Fieldx 6)
ADD_TEST( testMoment_to_Discrete_1 testMoment_to_Discretex 1)
ADD_TEST( testMoment_to_Discrete_2 testMoment_to_Discretex 2)
ADD_TEST( testMoment_to_Discrete_3 testMoment_to_Discretex 3)
ADD_TEST( testTesting_pass testTestingx 1)
ADD_TEST( testTesting_fail testTestingx 2)
ADD_TEST( testBuiltInCrossSections_1 testBuiltInCrossSectionsx 1)
ADD_TEST( testBuiltInCrossSections_2 testBuiltInCrossSectionsx 2)
ADD_TEST( testBuiltInCrossSections_3 testBuiltInCrossSectionsx 3)
ADD_TEST( testBuiltInCrossSections_4 testBuiltInCrossSectionsx 4)
ADD_TEST( testPsi_Cell_Field_1 testPsi_Cell_Fieldx 1)
ADD_TEST( testPsi_Cell_Field_2 testPsi_Cell_Fieldx 2)
ADD_TEST( testPsi_Cell_Field_3 testPsi_Cell_Fieldx 3)
ADD_TEST( testSweepSource_construct_1d                 testSweepSourcex     1)
ADD_TEST( testSweepSource_build_in_scatter_source_1d   testSweepSourcex     2)
ADD_TEST( testSweepSource_build_within_group_source_1d testSweepSourcex     3)
ADD_TEST( testSweepSource_build_source_1d              testSweepSourcex     4)
ADD_TEST( testSweepSource_construct_2d                 testSweepSourcex     5)
ADD_TEST( testSweepSource_build_in_scatter_source_2d   testSweepSourcex     6)
ADD_TEST( testSweepSource_build_within_group_source_2d testSweepSourcex     7)
ADD_TEST( testSweepSource_build_source_2d              testSweepSourcex     8)
ADD_TEST( testSweepSource_construct_3d                 testSweepSourcex     9)
ADD_TEST( testSweepSource_build_in_scatter_source_3d   testSweepSourcex    10)
ADD_TEST( testSweepSource_build_within_group_source_3d testSweepSourcex    11)
ADD_TEST( testSweepSource_build_source_3d              testSweepSourcex    12)
ADD_TEST( testMomentsIndex_1d                          testMomentsIndex     1)
ADD_TEST( testMomentsIndex_2d                          testMomentsIndex     2)
ADD_TEST( testMomentsIndex_3d                          testMomentsIndex     3)
ADD_TEST( testFissionSource_construct_1d               testFissionSourcex   1)
ADD_TEST( testFissionSource_build_fission_density_1d   testFissionSourcex   2)
ADD_TEST( testFissionSource_build_fission_source_1d    testFissionSourcex   3)
ADD_TEST( testFissionSource_verify_source_1d           testFissionSourcex   4)
ADD_TEST( testFissionSource_construct_2d               testFissionSourcex   5)
ADD_TEST( testFissionSource_build_fission_density_2d   testFissionSourcex   6)
ADD_TEST( testFissionSource_build_fission_source_2d    testFissionSourcex   7)
ADD_TEST( testFissionSource_verify_source_2d           testFissionSourcex   8)
ADD_TEST( testFissionSource_construct_3d               testFissionSourcex   9)
ADD_TEST( testFissionSource_build_fission_density_3d   testFissionSourcex  10)
ADD_TEST( testFissionSource_build_fission_source_3d    testFissionSourcex  11)
ADD_TEST( testFissionSource_verify_source_3d           testFissionSourcex  12)
ADD_TEST( testDD_Equations_1d                          testDD_Equationsx    1)
